private static NameReference createNameRef(TypeBinding typeBinding, ASTNode source) {
    long p = ((long) source.sourceStart << 32) | source.sourceEnd;
    char[] pkg = typeBinding.qualifiedPackageName();
    char[] basename = typeBinding.qualifiedSourceName();

    StringBuilder sb = new StringBuilder();
    if (pkg != null) sb.append(pkg);
    if (sb.length() > 0) sb.append(".");
    sb.append(basename);

    String tName = sb.toString();

    if (tName.indexOf('.') == -1) {
      return new SingleNameReference(basename, p);
    } else {
      char[][] sources;
      String[] in = tName.split("\\.");
      sources = new char[in.length][];
      for (int i = 0; i < in.length; i++) sources[i] = in[i].toCharArray();
      long[] poss = new long[in.length];
      Arrays.fill(poss, p);
      return new QualifiedNameReference(sources, poss, source.sourceStart, source.sourceEnd);
    }
  }