### Question:
PlatformRuleContext extends BaseRuleContext implements RuleContext { @Override public void send(Address destination, MessageBody payload) { PlatformMessage pm = PlatformMessage .builder() .to(destination) .from(source) .withPlaceId(getPlaceId()) .withPopulation(getPopulation()) .withPayload(payload) .withActor(source) .isRequestMessage(true) .create(); platformBus.send(pm); } protected  PlatformRuleContext(
         Address source, 
         UUID placeId,
         Logger logger, 
         PlatformMessageBus platformBus,
         RuleModelStore models,
         PlaceExecutorEventLoop eventLoop,
         TimeZone tz,
         Map<String,Object>variables
   ); static Builder builder(); @Override UUID getPlaceId(); @Override String getPopulation(); @Override boolean isPremium(); @Override String getServiceLevel(); @Override Iterable<Model> getModels(); @Override @Nullable Model getModelByAddress(Address address); @Override @Nullable Object getAttributeValue(Address address, String attributeName); @Override Object getVariable(String name); @SuppressWarnings("unchecked") @Override T getVariable(String name, Class<T> type); @Override Object setVariable(String name, Object value); @Override Logger logger(); @Override Calendar getLocalTime(); @Override void broadcast(MessageBody payload); @Override void send(Address destination, MessageBody payload); @Override String request(Address destination, MessageBody payload); @Override ScheduledEventHandle wakeUpIn(long time, TimeUnit unit); @Override ScheduledEventHandle wakeUpAt(Date timestamp); @Override Map<String, Object> getVariables(); @Override RuleContext override(Map<String, Object> variables); @Override RuleContext override(String namespace);  }### Answer:
@Test public void testSend() throws Exception { Address notifications = Address.platformService(NotificationCapability.NAMESPACE); context.send( notifications, MessageBody .buildMessage(Capability.EVENT_VALUE_CHANGE, ImmutableMap.of("test:attr", "new-value")) ); PlatformMessage message = platformBus.poll(); assertEquals(notifications, message.getDestination()); assertEquals(address, message.getSource()); assertEquals(placeId.toString(), message.getPlaceId()); assertEquals(Capability.EVENT_VALUE_CHANGE, message.getMessageType()); assertTrue(message.isRequest()); assertFalse(message.isError()); assertNull(message.getCorrelationId()); assertNotNull(message.getTimestamp()); }