code: void put(
          final MethodWriter owner,
          final ByteVector out,
          final int source,
          final boolean wideOffset)
      {
          if ((status & RESOLVED) == 0) {
              if (wideOffset) {
                  addReference(-1 - source, out.length);
                  out.putInt(-1);
              } else {
                  addReference(source, out.length);
                  out.putShort(-1);
              }
          } else {
              if (wideOffset) {
                  out.putInt(position - source);
              } else {
                  out.putShort(position - source);
              }
          }
      }
docs: Puts a reference to this label in the bytecode of a method. If the
  position of the label is known, the offset is computed and written
  directly. Otherwise, a null offset is written and a new forward reference
  is declared for this label.
  
  @param owner the code writer that calls this method.
  @param out the bytecode of the method.
  @param source the position of first byte of the bytecode instruction that
  contains this label.
  @param wideOffset <tt>true</tt> if the reference must be stored in 4
  bytes, or <tt>false</tt> if it must be stored with 2 bytes.
  @throws IllegalArgumentException if this label has not been created by
  the given code writer.