code: @BindTypeVariable
      public Typed<SOURCE> getSourceType() {
          final Position.Readable<SOURCE> source = getSourcePosition();
          final Type result = narrow(source);
          if (!TypeUtils.equals(result, source.getType())) {
              return new Typed<SOURCE>() {
  
                  @Override
                  public Type getType() {
                      return result;
                  }
              };
          }
          return source;
      }
docs: Get the narrowest possible source type, deduced from source position type/value.
  
  @return Typed