For theoretical purposes, how would one inject a blockchain fork in to the Bitcoin network? For example, lets say we have a small chain of blocks prepared in a program that is not a standard client / standard client with modified code. Can one force a client to accept those blocks through getmemorypool RPC command, or will the client not accept any block that would not go at the tip of the current blockchain?
What are the ways of getting a blockchain fork into the Bitcoin network?
EDIT: I'm not talking about alternative blockchain forks, like SolidCoin, etc., but rather about a fork in the standard Bitcoin chain/testnet chain that would cause some blocks to be orphaned.