@Override
  public ObjectStubSerializer<?, Stub> get() {
    ObjectStubSerializer<?, Stub> delegate = myFieldValue;
    if (delegate == null) {
      try {
        @SuppressWarnings("unchecked") ObjectStubSerializer<?, Stub> value = (ObjectStubSerializer<?, Stub>)myField.get(null);
        myFieldValue = delegate = value;
      }
      catch (IllegalAccessException e) {
        throw new RuntimeException(e);
      }
      catch (ClassCastException e) {
        throw new IllegalArgumentException(myField + " is not assignable to 'ObjectStubSerializer'", e);
      }
      if (!delegate.getExternalId().equals(externalId)) {
        throw new IllegalStateException(
          "External id mismatch in " + this + ". " +
          "Judging by extension declaration it should be " + externalId + " but " + delegate.getExternalId() + " is returned.");
      }
    }
    return delegate;
  }
@Override
  public ObjectStubSerializer<?, Stub> get()