reconnect programmatically instantiated prefab

When doing this:

Code:

Object prefab = AssetDatabase.LoadAssetAtPath(newPrefabPath, typeof(GameObject)); 
GameObject clone = GameObject.Instantiate(prefab) as GameObject; 

I can't do:

Code:

EditorUtility.ReconnectToLastPrefab(clone); 

And I can't do:

Code:

EditorUtility.GetPrefabParent(clone); 

Problem is, I have lots of scene objects (gameobjects) that are not prefabbed. I can create prefabs and I can instantiate (off thess prefabs) new gameobjects in place. But then these are not connected to their prefab.

How can I Instantiate a Prefab and Reconnect the resulting Object to this Prefab?

Here is a bit more code to explain what happens (or isn't):

// create the prefab for this transform ...
                newPrefabPath = prefabPath + Path.DirectorySeparatorChar + _t.gameObject.name + ".prefab";
                newPrefab = EditorUtility.CreateEmptyPrefab(newPrefabPath);
                EditorUtility.ReplacePrefab(_t.gameObject, newPrefab);

                Object prefab = AssetDatabase.LoadAssetAtPath(newPrefabPath, typeof(GameObject));
                GameObject clone = GameObject.Instantiate(prefab) as GameObject;

                // now replace the actual object in the scene with this prefab
                clone.transform.localScale = _t.localScale;
                clone.transform.position = _t.position;
                clone.transform.rotation = _t.rotation;
                clone.transform.parent = _t.parent;
                clone.name = _t.gameObject.name;
                Debug.Log(EditorUtility.ReconnectToLastPrefab(clone));
                EditorUtility.GetPrefabParent(clone);
                GameObject.DestroyImmediate(_t.gameObject);

So what I basically do is creating an empty prefab, replacing the contents of the prefab with an existing gameobject, then load this newly created prefab and instantiate it in the current scene, then set transform values according to the original game object and finally destroy the original game object.

Use EditorUtility.InstantiatePrefab.

The method has been moved into a seperate class and can now be found here: PrefabUtility.InstantiatePrefab