private List<ServerDebugVariable> createFrom(VmCallFrame frame) {
    if (frame.getLocals() == null) {
      return Collections.emptyList();
    } else {
      List<ServerDebugVariable> variables = new ArrayList<ServerDebugVariable>();

      // create a synthetic globals variable
      variables.add(ServerDebugVariable.createLibraryVariable(getTarget(), vmFrame.getLibraryId()));

      for (VmVariable var : frame.getLocals()) {
        ServerDebugVariable serverVariable = new ServerDebugVariable(getTarget(), var);

        variables.add(serverVariable);
      }

      return variables;
    }
  }
  @Override
  public String getSourceLocationPath() {
    URI uri = URI.create(vmFrame.getLocation().getUrl());

    // Resolve a package: reference.
    if (PackageLibraryManager.isPackageUri(uri)
        && DartCore.getPlugin().getPackageRootPref() != null) {
      uri =
          PackageLibraryManagerProvider.getPackageLibraryManager()
              .resolvePackageUri(vmFrame.getLocation().getUrl());
    }

    if ("file".equals(uri.getScheme())) {
      return uri.getPath();
    } else if (PackageLibraryManager.isDartUri(uri)) {
      return uri.toString();
    } else {
      return "builtin:" + vmFrame.getLibraryId() + ":" + vmFrame.getLocation().getUrl();
    }
  }