code: void fillIn(ClassSymbol c) {
          if (completionFailureName == c.fullname) {
              throw new CompletionFailure(c, "user-selected completion failure by class name");
          }
          currentOwner = c;
          JavaFileObject classfile = c.classfile;
          if (classfile != null) {
              JavaFileObject previousClassFile = currentClassFile;
              try {
                  if (reader.filling) {
                      Assert.error("Filling " + classfile.toUri() + " during " + previousClassFile);
                  }
                  currentClassFile = classfile;
                  if (verbose) {
                      log.printVerbose("loading", currentClassFile.getName());
                  }
                  if (classfile.getKind() == JavaFileObject.Kind.CLASS ||
                      classfile.getKind() == JavaFileObject.Kind.OTHER) {
                      reader.readClassFile(c);
                      c.flags_field |= getSupplementaryFlags(c);
                  } else {
                      if (!sourceCompleter.isTerminal()) {
                          sourceCompleter.complete(c);
                      } else {
                          throw new IllegalStateException("Source completer required to read "
                                                          + classfile.toUri());
                      }
                  }
              } finally {
                  currentClassFile = previousClassFile;
              }
          } else {
              throw classFileNotFound(c);
          }
      }
docs: Fill in definition of class `c' from corresponding class or
  source file.