code: void put(
              final MethodWriter owner,
              final ByteBuffer out,
              final int source,
              final boolean wideOffset) {
  
          if (resolved) {
              if (wideOffset) {
                  out.putInt(position - source);
              } else {
                  out.putShort(position - source);
              }
          } else {
              if (wideOffset) {
                  addReference(-1 - source, out.length);
                  out.putInt(-1);
              } else {
                  addReference(source, out.length);
                  out.putShort(-1);
              }
          }
      }
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.