code: public synchronized JavaClassModel getOrCreatePhantom(String qualifiedName)
      {
          JavaClassModel result = resolveByQualifiedName(qualifiedName);
          if (result == null)
          {
              // create a phantom
              result = new GraphService<>(getGraphContext(), PhantomJavaClassModel.class).create();
              setPropertiesFromName(result, qualifiedName);
          }
          return result;
      }
docs: Gets an existing {@link JavaClassModel}, however if none currently exists, then create a {@link PhantomJavaClassModel}.<br/>
  
  This is intended to indicate that we know about a class by reference (for example another class subclasses it, or it is referenced in an XML
  file), but we do not yet have a location on the disk for the class (or source) file itself.
  
  To create a class (possibly converting a {@link PhantomJavaClassModel} to concrete in the process), use {@link JavaClassService#create(String)}
  instead.