

<!DOCTYPE html>

<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" href="/liquidjava-docs/assets/css/just-the-docs-default.css">

  <link rel="stylesheet" href="/liquidjava-docs/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet">

  <style id="jtd-nav-activation">
  
    .site-nav ul li a {
      background-image: none;
    }

  </style>

  

  
    <script src="/liquidjava-docs/assets/js/vendor/lunr.min.js"></script>
  

  <script src="/liquidjava-docs/assets/js/just-the-docs.js"></script>

  <meta name="viewport" content="width=device-width, initial-scale=1">

  

  <link rel="icon" href="/liquidjava-docs/assets/images/favicon.ico" type="image/x-icon">



  <!-- Begin Jekyll SEO tag v2.8.0 -->
<title>LiquidJava Docs</title>
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="LiquidJava Docs" />
<meta property="og:locale" content="en_US" />
<link rel="canonical" href="https://liquid-java.github.io/liquidjava-docs/assets/css/just-the-docs-head-nav.css" />
<meta property="og:url" content="https://liquid-java.github.io/liquidjava-docs/assets/css/just-the-docs-head-nav.css" />
<meta property="og:site_name" content="LiquidJava Docs" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="LiquidJava Docs" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","headline":"LiquidJava Docs","url":"https://liquid-java.github.io/liquidjava-docs/assets/css/just-the-docs-head-nav.css"}</script>
<!-- End Jekyll SEO tag -->


  <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">


</head>

<body>
  <a class="skip-to-main" href="#main-content">Skip to main content</a>
  <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
  <symbol id="svg-link" viewBox="0 0 24 24">
  <title>Link</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
    <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
  </svg>
</symbol>

  <symbol id="svg-menu" viewBox="0 0 24 24">
  <title>Menu</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
    <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
  </svg>
</symbol>

  <symbol id="svg-arrow-right" viewBox="0 0 24 24">
  <title>Expand</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
    <polyline points="9 18 15 12 9 6"></polyline>
  </svg>
</symbol>

  <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE -->
<symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link">
  <title id="svg-external-link-title">(external link)</title>
  <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>
</symbol>

  
    <symbol id="svg-doc" viewBox="0 0 24 24">
  <title>Document</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
    <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
  </svg>
</symbol>

    <symbol id="svg-search" viewBox="0 0 24 24">
  <title>Search</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
    <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
  </svg>
</symbol>

  
  
    <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md -->
<symbol id="svg-copy" viewBox="0 0 16 16">
  <title>Copy</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/>
    <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/>
  </svg>
</symbol>
<symbol id="svg-copied" viewBox="0 0 16 16">
  <title>Copied</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16">
    <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/>
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/>
  </svg>
</symbol>

  
</svg>

  
    <header class="side-bar">
  <div class="site-header">
    <a href="/liquidjava-docs/" class="site-title lh-tight">
  LiquidJava Docs

</a>
    <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false">
      <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
    </button>
  </div>

  <nav aria-label="Main" id="site-nav" class="site-nav">
  
  
    <ul class="nav-list"><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Getting Started submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/liquidjava-docs/getting-started/" class="nav-list-link">Getting Started</a><ul class="nav-list"><li class="nav-list-item"><a href="/liquidjava-docs/getting-started/setup/" class="nav-list-link">Setup</a></li><li class="nav-list-item"><a href="/liquidjava-docs/getting-started/overview/" class="nav-list-link">Overview</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Annotations submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/liquidjava-docs/annotations/" class="nav-list-link">Annotations</a><ul class="nav-list"><li class="nav-list-item"><a href="/liquidjava-docs/annotations/refinement/" class="nav-list-link">@Refinement</a></li><li class="nav-list-item"><a href="/liquidjava-docs/annotations/refinement-alias/" class="nav-list-link">@RefinementAlias</a></li><li class="nav-list-item"><a href="/liquidjava-docs/annotations/state-refinement/" class="nav-list-link">@StateRefinement</a></li><li class="nav-list-item"><a href="/liquidjava-docs/annotations/external-refinements-for/" class="nav-list-link">@ExternalRefinementsFor</a></li><li class="nav-list-item"><a href="/liquidjava-docs/annotations/ghost/" class="nav-list-link">@Ghost</a></li><li class="nav-list-item"><a href="/liquidjava-docs/annotations/refinement-predicate/" class="nav-list-link">@RefinementPredicate</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Diagnostics submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/liquidjava-docs/diagnostics/" class="nav-list-link">Diagnostics</a><ul class="nav-list"><li class="nav-list-item"><a href="/liquidjava-docs/diagnostics/errors/" class="nav-list-link">Errors</a></li><li class="nav-list-item"><a href="/liquidjava-docs/diagnostics/warnings/" class="nav-list-link">Warnings</a></li><li class="nav-list-item"><a href="/liquidjava-docs/diagnostics/custom-messages/" class="nav-list-link">Custom Messages</a></li><li class="nav-list-item"><a href="/liquidjava-docs/diagnostics/understanding-refinement-errors/" class="nav-list-link">Understanding Refinement Errors</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="VS Code Extension submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/liquidjava-docs/vscode-extension/" class="nav-list-link">VS Code Extension</a><ul class="nav-list"><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/real-time-diagnostic-feedback/" class="nav-list-link">Real-Time Diagnostic Feedback</a></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/syntax-highlighting/" class="nav-list-link">Syntax Highlighting for Refinements</a></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/autocomplete/" class="nav-list-link">Autocomplete for Refinements</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Webview submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/liquidjava-docs/vscode-extension/webview/" class="nav-list-link">Webview</a><ul class="nav-list"><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/webview/diagnostic-explorer/" class="nav-list-link">Diagnostic Explorer</a></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/webview/context-debugger/" class="nav-list-link">Context Debugger</a></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/webview/state-machine-visualizer/" class="nav-list-link">State Machine Visualizer</a></li></ul></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/status-bar-indicator/" class="nav-list-link">Status Bar Indicator</a></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/commands/" class="nav-list-link">Commands</a></li><li class="nav-list-item"><a href="/liquidjava-docs/vscode-extension/output-channel/" class="nav-list-link">Output Channel</a></li></ul></li><li class="nav-list-item"><a href="/liquidjava-docs/command-line-interface/" class="nav-list-link">Command-Line Interface</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Examples submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/liquidjava-docs/examples/" class="nav-list-link">Examples</a><ul class="nav-list"><li class="nav-list-item"><a href="/liquidjava-docs/examples/counter/" class="nav-list-link">Counter</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/pagination/" class="nav-list-link">Pagination</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/media-player/" class="nav-list-link">Media Player</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/email/" class="nav-list-link">Email</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/order/" class="nav-list-link">Order</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/downloader/" class="nav-list-link">Downloader</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/connection/" class="nav-list-link">Connection</a></li><li class="nav-list-item"><a href="/liquidjava-docs/examples/arraylist/" class="nav-list-link">ArrayList</a></li></ul></li><li class="nav-list-item"><a href="/liquidjava-docs/resources/" class="nav-list-link">Resources</a></li></ul>
  
</nav>


<div class="d-md-block d-none site-footer">
  
  
    <p>
  Help improve this documentation by contributing on 
  <a href="https://github.com/liquid-java/liquidjava-docs">GitHub</a>
</p>

  
  </div>
</header>

  
  <div class="main" id="top">
    <div id="main-header" class="main-header">
  
    

<div class="search" role="search">
  <div class="search-input-wrap">
    <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search LiquidJava Docs" autocomplete="off">
    <label for="search-input" class="search-label">
      <span class="sr-only">Search LiquidJava Docs</span>
      <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
    </label>
  </div>
  <div id="search-results" class="search-results"></div>
</div>

  
  
  
</div>

    <div class="main-content-wrap">
      
      <div id="main-content" class="main-content">
        <main>
          
            <hgrid-template-columns: repeat(2, minmax(0, 1fr)); } }
.site-nav ul li a {
  background-image: linear-gradient(-90deg, #e6e6e1 0%, rgba(230, 230, 225, 0.8) 80%, rgba(230, 230, 225, 0) 100%); }

          

          <div class="card-grid">
  
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/counter/">Counter</a>
      </h3>
      
        <p>A simple refinement example for ensuring a counter never decrements below zero.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/webview/diagnostic-explorer/">Diagnostic Explorer</a>
      </h3>
      
        <p>Explore how you can use the diagnostic explorer to understand failures interactively.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/diagnostics/errors/">Errors</a>
      </h3>
      
        <p>Learn about the different verification errors LiquidJava can report and what each one means.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/getting-started/">Getting Started</a>
      </h3>
      
        <p>Set up your environment and run your first LiquidJava verification.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/real-time-diagnostic-feedback/">Real-Time Diagnostic Feedback</a>
      </h3>
      
        <p>Find out about real-time diagnostic reporting directly in the editor.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/refinement/">@Refinement</a>
      </h3>
      
        <p>Learn about how to use refinements to specify constraints on variables, fields, parameters, and return values.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/getting-started/setup/">Setup</a>
      </h3>
      
        <p>Set up the dependency, verifier, and VS Code extension to start using LiquidJava.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/webview/context-debugger/">Context Debugger</a>
      </h3>
      
        <p>See how you can use the context debugger to debug failed refinements.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/">Annotations</a>
      </h3>
      
        <p>Learn the different annotations in LiquidJava for writing specifications.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/getting-started/overview/">Overview</a>
      </h3>
      
        <p>Learn what LiquidJava adds to Java.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/pagination/">Pagination</a>
      </h3>
      
        <p>Plain refinements with aliases for page numbers, page sizes, and computed offsets.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/refinement-alias/">@RefinementAlias</a>
      </h3>
      
        <p>Learn how to reuse common refinement predicates with aliases to keep contracts shorter and easier to maintain.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/syntax-highlighting/">Syntax Highlighting for Refinements</a>
      </h3>
      
        <p>Learn about syntax highlighting for refinements in the VS Code extension.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/diagnostics/warnings/">Warnings</a>
      </h3>
      
        <p>Learn about the different verification warnings LiquidJava can report and what each one means.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/autocomplete/">Autocomplete for Refinements</a>
      </h3>
      
        <p>Explore context-aware auto-completion support for refinement predicates.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/diagnostics/custom-messages/">Custom Messages</a>
      </h3>
      
        <p>Learn how to provide clearer diagnostic messages.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/diagnostics/">Diagnostics</a>
      </h3>
      
        <p>Learn about the different types of errors and warnings, how to use custom error messages, and how to interpret refinement errors.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/media-player/">Media Player</a>
      </h3>
      
        <p>A typestate protocol for a simple media player.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/webview/state-machine-visualizer/">State Machine Visualizer</a>
      </h3>
      
        <p>Find out about the state machine visualizer for classes with state refinements.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/state-refinement/">@StateRefinement</a>
      </h3>
      
        <p>Learn how to model protocol-oriented object states and valid method transitions.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/email/">Email</a>
      </h3>
      
        <p>A typestate protocol for an Email builder API.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/external-refinements-for/">@ExternalRefinementsFor</a>
      </h3>
      
        <p>Learn how to refine external libraries that cannot be annotated directly.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/webview/">Webview</a>
      </h3>
      
        <p>Delve into the VS Code webview with interactive diagnostic explorer, context debugger, and state machine visualizer.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/">VS Code Extension</a>
      </h3>
      
        <p>Use the LiquidJava VS Code extension for live diagnostics, syntax highlighting, and IDE feedback while editing Java code.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/diagnostics/understanding-refinement-errors/">Understanding Refinement Errors</a>
      </h3>
      
        <p>Learn how to read and interpret LiquidJava refinement errors.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/command-line-interface/">Command-Line Interface</a>
      </h3>
      
        <p>Run the LiquidJava verifier from the command line for local checks, debugging, and CI workflows.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/ghost/">@Ghost</a>
      </h3>
      
        <p>Learn how to track logical state that helps express and verify richer object invariants.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/order/">Order</a>
      </h3>
      
        <p>A typestate protocol for a simple order processing system.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/status-bar-indicator/">Status Bar Indicator</a>
      </h3>
      
        <p>Check out the indicator that shows the current state of LiquidJava.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/commands/">Commands</a>
      </h3>
      
        <p>Explore the commands provided by the extension for various interactions.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/downloader/">Downloader</a>
      </h3>
      
        <p>A typestate protocol for a downloader object.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/">Examples</a>
      </h3>
      
        <p>LiquidJava example usages with focused code snippets.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/annotations/refinement-predicate/">@RefinementPredicate</a>
      </h3>
      
        <p>Learn how to declare custom ghost functions and how they relate to ghosts and states.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/connection/">Connection</a>
      </h3>
      
        <p>A typestate protocol with a value-dependent conditional transition.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/vscode-extension/output-channel/">Output Channel</a>
      </h3>
      
        <p>Discover the output channel for LiquidJava logs.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/resources/">Resources</a>
      </h3>
      
        <p>Find LiquidJava papers, posters, and source repositories for deeper reading and experimentation.</p>
      
    </div>
  
    <div class="card-panel">
      <h3>
        <a href="/liquidjava-docs/examples/arraylist/">ArrayList</a>
      </h3>
      
        <p>An external refinement for ArrayList that prevents out-of-bounds access.</p>
      
    </div>
  
</div>


          
            <hr>
<h2 class="text-delta">Table of contents</h2>

<ul>
  
  <li>
    <a href="/liquidjava-docs/getting-started/">Getting Started</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/annotations/">Annotations</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/diagnostics/">Diagnostics</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/vscode-extension/">VS Code Extension</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/command-line-interface/">Command-Line Interface</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/examples/">Examples</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/resources/">Resources</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/">LiquidJava Docs</a>
  </li>
  
  <li>
    <a href="/liquidjava-docs/404.html">Page not found</a>
  </li>
  
</ul>
          
        </main>
        
<hr>
<footer>
  

  

  
    <div class="d-flex mt-2">
      
      
    </div>
  <div class="d-md-none mt-4 fs-2">
    
    
      <p>
  Help improve this documentation by contributing on 
  <a href="https://github.com/liquid-java/liquidjava-docs">GitHub</a>
</p>

    
  </div>
</footer>

      </div>
    </div>
    
      

<div class="search-overlay"></div>

    
  </div>

  
</body>
</html>

