code: boolean tryLock(long id, ItemState state, Transaction txn) {
          final CacheLine line = getLine(id);
          if (line == null)
              return false;
          synchronized (line) {
              if ((state == ItemState.OWNED & line.getState() == State.E)
                      | (state == ItemState.SHARED & !line.getState().isLessThan(State.S))) {
                  lockLine(line, txn);
                  return true;
              }
          }
          return false;
      }
docs: ///////////////////////// Public Ops ///////////////////