### Question:
PastryNodeImpl extends Node { @Override public synchronized void shutDown() { this.setStatus(NodeStatus.CLOSING); super.shutDown(); if (threadpool != null) { threadpool.shutdownNow(); } if (pastryNode != null) { pastryNode.destroy(); pastryNode = null; } if (pastryEnvironment != null) { pastryEnvironment.destroy(); pastryEnvironment = null; } this.setStatus(NodeStatus.CLOSED); } PastryNodeImpl(String bootstrap, STORAGE_MODE storageMode, String storageDir, Long nodeIdSeed);  PastryNodeImpl(ClassManager classManager, boolean useMonitoringObserver, InetAddress pastryBindAddress,
			Integer pastryPort, List<String> bootstrap, STORAGE_MODE storageMode, String storageDir, Long nodeIdSeed); PastryNode getPastryNode(); @Override synchronized void shutDown(); @Override synchronized void registerReceiver(MessageReceiver receiver); @Override synchronized void unregisterReceiver(MessageReceiver receiver); @Override synchronized void registerReceiverToTopic(MessageReceiver receiver, long topic); @Override synchronized void unregisterReceiverFromTopic(MessageReceiver receiver, long topic); @Override void sendMessage(Message message, MessageResultListener listener, SendMode mode); @Override void sendMessage(Message message, Object atNodeId, MessageResultListener listener); @Deprecated @Override EnvelopeVersion fetchArtifact(long id); @Deprecated @Override EnvelopeVersion fetchArtifact(String identifier); @Deprecated @Override void storeArtifact(EnvelopeVersion envelope); @Deprecated @Override void removeArtifact(long id, byte[] signature); @Override Object[] findRegisteredAgent(String agentId, int hintOfExpectedCount); NodeApplication getApplication(); @Override AgentImpl getAgent(String id); @Override void storeAgent(AgentImpl agent); @Deprecated @Override void updateAgent(AgentImpl agent); @Override Serializable getNodeId(); InetAddress getBindAddress(); int getPort(); @Override Object[] getOtherKnownNodes(); @Override NodeInformation getNodeInformation(Object nodeId); long getLocalStorageSize(); long getLocalMaxStorageSize(); @Override void storeEnvelope(EnvelopeVersion envelope, AgentImpl author); @Override EnvelopeVersion fetchEnvelope(String identifier); @Override EnvelopeVersion createEnvelope(String identifier, PublicKey authorPubKey, Serializable content,
			AgentImpl... reader); @Override EnvelopeVersion createEnvelope(String identifier, PublicKey authorPubKey, Serializable content,
			Collection<?> readers); @Override EnvelopeVersion createEnvelope(EnvelopeVersion previousVersion, Serializable content); @Override EnvelopeVersion createEnvelope(EnvelopeVersion previousVersion, Serializable content, AgentImpl... reader); @Override EnvelopeVersion createEnvelope(EnvelopeVersion previousVersion, Serializable content, Collection<?> readers); @Override EnvelopeVersion createUnencryptedEnvelope(String identifier, PublicKey authorPubKey, Serializable content); @Override EnvelopeVersion createUnencryptedEnvelope(EnvelopeVersion previousVersion, Serializable content); @Override void storeEnvelope(EnvelopeVersion envelope, AgentImpl author, long timeoutMs); @Override void storeEnvelopeAsync(EnvelopeVersion envelope, AgentImpl author, StorageStoreResultHandler resultHandler,
			StorageCollisionHandler collisionHandler, StorageExceptionHandler exceptionHandler); @Override EnvelopeVersion fetchEnvelope(String identifier, long timeoutMs); @Override void fetchEnvelopeAsync(String identifier, StorageEnvelopeHandler envelopeHandler,
			StorageExceptionHandler exceptionHandler); @Override void removeEnvelope(String identifier); void storeHashedContentAsync(byte[] content, StorageStoreResultHandler resultHandler,
			StorageExceptionHandler exceptionHandler); void storeHashedContent(byte[] content); void storeHashedContent(byte[] content, long timeoutMs); void fetchHashedContentAsync(byte[] hash, StorageArtifactHandler artifactHandler,
			StorageExceptionHandler exceptionHandler); byte[] fetchHashedContent(byte[] hash); byte[] fetchHashedContent(byte[] hash, long timeoutMs); static final int DEFAULT_BOOTSTRAP_PORT; }### Answer:
@Test public void testNodeRestart() { PastryNodeImpl testNode = null; try { testNode = TestSuite.launchNetwork(1).get(0); testNode.shutDown(); testNode.launch(); testNode.shutDown(); } catch (Exception e) { e.printStackTrace(); Assert.fail(e.toString()); } finally { testNode.shutDown(); System.out.println("Node stopped"); } }