public static MessageHeadersBuilder newInstance(final MessageDirection direction, final CharSequence thingId,
final CharSequence subject) {
checkNotNull(direction, MessageHeaderDefinition.DIRECTION.getKey());
argumentNotEmpty(thingId, MessageHeaderDefinition.THING_ID.getKey());
argumentNotEmpty(subject, MessageHeaderDefinition.SUBJECT.getKey());
final Map<String, String> initialHeaders = new HashMap<>();
initialHeaders.put(MessageHeaderDefinition.DIRECTION.getKey(), direction.toString());
initialHeaders.put(MessageHeaderDefinition.THING_ID.getKey(), thingId.toString());
initialHeaders.put(MessageHeaderDefinition.SUBJECT.getKey(), subject.toString());
return of(initialHeaders);
}