def __init__(self, leaf_target, base_targets, app_config, additional_config):
<EOL>super(DerivedTarget, self).__init__(<EOL>path = leaf_target.path,<EOL>installed_linked = leaf_target.installed_linked,<EOL>latest_suitable_version = leaf_target.latest_suitable_version<EOL>)<EOL>self.hierarchy = [leaf_target] + base_targets[:]<EOL>self.config = None<EOL>self.config_blame = None<EOL>self.app_config = app_config<EOL>self.additional_config = additional_config or {}<EOL>
Initialise a DerivedTarget (representing an inheritance hierarchy of
            Targets.), given the most-derived Target description, and a set of
            available Targets to compose the rest of the lineage from.

            DerivedTarget provides build & debug commands, and access to the
            derived target config info (merged with the application config
            info from config.json, if any).

            It's possible to update the application config for an existing
            DerivedTarget instance.

            DerivedTarget can also be used as a stand-in for the most-derived
            (leaf) target in the inheritance hierarchy.